package fr.expdev.bndd;

import java.util.Iterator;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import fr.expdev.bndd.data.Post;
import fr.expdev.bndd.data.sqlite.PostsSQLite;
import fr.expdev.bndd.widget.PostItem;
import greendroid.app.GDListActivity;
import greendroid.widget.ItemAdapter;

public class FavoritesActivity extends GDListActivity implements ActivityRefreshable {
	
	/**
	 * Widget ListView qui presente les posts
	 */
	protected ListView listView;
	
	/**
	 * Adapter pour la liste de posts
	 */
	protected final ItemAdapter adapter = new ItemAdapter(this);
	
	public FavoritesActivity() {}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setTitle(getString(R.string.favorites));
        
		// Si on vient de créer l'Activity (pas juste une rotation de l'écran)
		if (AppContext.getInstance().getPosts().size() == 0) {
			
			// On lit la base de données
			PostsSQLite db = new PostsSQLite(this);
			db.open(false);
			List<Post> newPosts = db.selectAllPosts();
			db.close();
			
			// S'il y a des posts chargés depuis la base de données on les ajoute à l'AppContext
			if (newPosts.size() > 0) {
				AppContext.getInstance().getPosts().addAll(newPosts);
				refreshAdapter();
			}
			
		} else {

			// On rafraichit l'adapter
			refreshAdapter();
			
		}
		
        setListAdapter(adapter);

	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent intent = new Intent(FavoritesActivity.this, DetailPostActivity.class);
        Iterator<Post> i = AppContext.getInstance().getPosts().iterator();
        int x = 0;
        
        // On recherche l'élément cliqué
        while(i.hasNext()) {
        	Post p = i.next();
        	if (p.isFavorite() && x++ == position) {
        		intent.putExtra("post", p);
        		break;
        	}
        }
        
        startActivity(intent);
	}

	/**
	 * Rafraichir l'affichage des posts avec les Posts de l'AppContext
	 */
	public void refreshAdapter() {
		MainActivity.getInstance().refreshAdapter();
		adapter.clear();
		Iterator<Post> i = AppContext.getInstance().getPosts().iterator();
		
		while(i.hasNext()) {
			Post post = (Post)i.next();
			if (post.isFavorite()) {
				adapter.add(new PostItem(this, post));
			}
		}
		adapter.notifyDataSetChanged();
	}
	
}
